/*
    reducer在redux完成对store仓库中的state完成计算功能，规则如下
    1、reducer是一个函数
    2、函数的第一个参数就是state
    3、可以使用ES6函数参数设置默认值的方式给store中state赋初始值
    4.函数的第2个参数来存放action的通知对象
    5、在reducer函数体内使用switch来判断action的type类型，根据类型完成不同的操作
    6、函数的return之后就可以将newState,存储到store中了，将状态机中原先的state就覆盖了
    6、将reducer函数使用ES6的导出方式将其导出

    action的优化有两方面
    1、导出action通知对象编程Action Createors，让组件可以给action内部传递响应的额外参数
    2、将action中type的值变成常量，然后再常量文件统一来进行管理

*/
import * as actionTypes from '../actions/actionTypes'
const counterReducer=(previousState={
    counter:0,
    shopcartList:[]
},action)=>{
    switch(action.type){
        case actionTypes.INCREMENT:
            //这种写法有问题
            return {...previousState,counter:previousState.counter+action.n}
        case actionTypes.SUBTRACTION:
            return {...previousState,counter:previousState.counter+action.n}
        default:
            return previousState
    }
}
export default counterReducer